package Compilador;
/**
 * Clase:Compilador
 * Descripcion:Se encarga de realizar todos los pasos de un compilador
 * @author PLg Group
 */


import utils.TablaSimbolos;
import AnalisisSintactico.AnalizadorSintactico_v4;

public class Compilador {
	
	public static void compilacion(String args[]){
		try{
		   System.out.println("Analizando(Lexico):");
		   /////// ANALISIS LEXICO \\\\\\\\\
	       //IAnalizadorLexico analizLex = new AnalizadorLexico_v2(args[0]);
	       //Token aux = analizLex.analiza();
	       //while(aux !=null){
	    	 //  System.out.println(aux.getLexema());
	    	  // aux = analizLex.analiza();
	       //}
	       AnalizadorSintactico_v4 anaSintac =  new AnalizadorSintactico_v4(args[0],args[1]);
	       anaSintac.analiza(new TablaSimbolos());
	       //anLexico = analizLex.analiza();
	         //Muestro los Token
	       //mostrarTablaLexico();
	       
	       //System.out.println("Analizando(Sintatico):");
	       ///////       ANALISIS SINTACTICO   \\\\\\\\
	       //TablaSimbolos tSimbolos = new TablaSimbolos();
	       //IAnalizadorSintactico analizSint =new AnalizadorSintacticov3(anLexico);
	       //anSintantico = analizSint.analiza(tSimbolos);
	       //mostrarArbolInordenSintaxis();
	       
	       //System.out.println("Analizando(Traduciendo):");
	       /////// TRADUCCION A LENGUAJE OBJETO \\\\\\\\
	       //TraductorLenguajeObjeto traductor = new TraductorLenguajeObjeto(anSintantico);
	       //traductor.traduce(args[1], tSimbolos);
		}
	     catch(Exception e){    	
	    	 System.out.println("Error del compilador...");
	    	 e.printStackTrace();
	     }
	    
	}
	/*
	private static void mostrarArbolInordenSintaxis() {
		for (int i = 0; i < anSintantico.size(); i++) {
			  System.out.println(anSintantico.elementAt(i).getLexema());
		   }
	}

	private static void mostrarTablaLexico() {
		System.out.println("Lexema        Tipo        Valor");
	       for(int i = 0;i < anLexico.size();i++){
	    	   System.out.print("["+anLexico.elementAt(i).getLexema()+"]          "+ anLexico.elementAt(i).getIdentificador());
	           if(anLexico.elementAt(i).getIdentificador() == 257)
	        	   System.out.print("        "+((anLexico.elementAt(i))).getValor());
	           else if(anLexico.elementAt(i).getIdentificador() == 258)
	        	   System.out.print("        "+((anLexico.elementAt(i))).getValor());
	           else
	        	   System.out.print("         N/A");
	           System.out.println();
	       }
	}*/
}
